Jackson একটি জনপ্রিয় Java library যা মূলত JSON (JavaScript Object Notation) ডেটা প্রক্রিয়াকরণ (parsing, generation, mapping) এর জন্য ব্যবহৃত হয়। Jackson-এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ এবং বহুল ব্যবহৃত ক্লাস হল ObjectMapper। এটি JSON ডেটাকে Java Objects-এ এবং Java Objects-কে JSON-এ রূপান্তর (serialization/deserialization) করার জন্য ব্যবহৃত হয়।
ObjectMapper এর ভূমিকা:
ObjectMapper হল Jackson লাইব্রেরির একটি প্রধান ক্লাস যা JSON এবং Java অবজেক্টের মধ্যে কনভার্সন করতে ব্যবহৃত হয়। এটি JSON ডেটার serialization এবং deserialization করার জন্য data-binding প্রযুক্তি ব্যবহার করে।
Serialization মানে হল Java Object কে JSON format এ রূপান্তর করা, এবং Deserialization মানে হল JSON ডেটাকে Java Object এ রূপান্তর করা।
1. ObjectMapper এর ব্যবহার
ObjectMapper ক্লাস Jackson লাইব্রেরির প্রধান ক্লাস যা JSON ডেটা এবং Java অবজেক্টের মধ্যে তথ্য বিনিময় করার জন্য ব্যবহৃত হয়।
1.1. Java Object to JSON Conversion (Serialization)
ObjectMapper ব্যবহার করে আপনি Java অবজেক্টকে JSON স্ট্রিং বা JSON ফাইলে রূপান্তর করতে পারেন। নিচে একটি উদাহরণ দেখানো হলো যেখানে একটি Java Object কে JSON স্ট্রিং এ রূপান্তর করা হচ্ছে:
import com.fasterxml.jackson.databind.ObjectMapper;
class Person {
private String name;
private int age;
// Constructor, getters and setters
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class JacksonExample {
public static void main(String[] args) throws Exception {
Person person = new Person("John", 30);
// Create an ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// Java object to JSON (serialization)
String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString); // Output: {"name":"John","age":30}
}
}
উপরের কোডে, Person ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ObjectMapper ব্যবহার করে এটি JSON ফরম্যাটে রূপান্তরিত করা হয়েছে।
1.2. JSON to Java Object Conversion (Deserialization)
আপনি JSON ডেটাকে Java অবজেক্টে রূপান্তর করতে ObjectMapper ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো যেখানে একটি JSON string কে Java Object এ রূপান্তর করা হচ্ছে:
import com.fasterxml.jackson.databind.ObjectMapper;
class Person {
private String name;
private int age;
// Constructor, getters and setters
public Person() {} // Default constructor is needed for deserialization
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class JacksonExample {
public static void main(String[] args) throws Exception {
String jsonString = "{\"name\":\"John\", \"age\":30}";
// Create an ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
// JSON string to Java object (deserialization)
Person person = objectMapper.readValue(jsonString, Person.class);
System.out.println(person.getName()); // Output: John
System.out.println(person.getAge()); // Output: 30
}
}
এখানে, একটি JSON স্ট্রিং দেওয়া হয়েছে এবং ObjectMapper এর readValue() মেথড ব্যবহার করে তা Person অবজেক্টে রূপান্তরিত করা হয়েছে।
2. ObjectMapper এর গুরুত্বপূর্ণ মেথডসমূহ
ObjectMapper ক্লাসে বেশ কিছু গুরুত্বপূর্ণ মেথড রয়েছে যা JSON এবং Java অবজেক্টের মধ্যে কনভার্সন করার জন্য ব্যবহৃত হয়:
writeValue():
- writeValue() মেথডটি Java অবজেক্টকে JSON এ রূপান্তরিত করে এবং এটি সরাসরি JSON ফাইলে বা স্ট্রিং হিসেবে রিটার্ন করতে পারে।
objectMapper.writeValue(new File("person.json"), person); objectMapper.writeValueAsString(person);readValue():
- readValue() মেথডটি JSON ডেটাকে Java অবজেক্টে রূপান্তরিত করে।
Person person = objectMapper.readValue(jsonString, Person.class);convertValue():
- convertValue() মেথডটি একটি অবজেক্টকে অন্য ধরণের অবজেক্টে রূপান্তরিত করতে ব্যবহৃত হয়। এটি একটি কাস্টম কনভার্সন ফিচার সরবরাহ করে।
MyClass myObject = objectMapper.convertValue(person, MyClass.class);writeTree():
- writeTree() মেথডটি JsonNode তে Java অবজেক্ট লেখে, যা JSON ডেটার এক প্রকার কাঠামো।
JsonNode node = objectMapper.valueToTree(person);
3. ObjectMapper এর Advantages
- High Performance: Jackson ObjectMapper খুব দ্রুত JSON ডেটা প্রসেস করে, যা বৃহৎ ডেটাসেটের জন্য খুবই কার্যকরী।
- Annotations Support: Jackson এর annotations ব্যবহার করে JSON ডেটা এবং Java অবজেক্টের মধ্যে কনভার্সন কাস্টমাইজ করা যায়। যেমন @JsonProperty, @JsonIgnore, @JsonCreator ইত্যাদি।
- Streaming API: Jackson এর streaming API ব্যবহার করে আপনি JSON ডেটা একে একে প্রসেস করতে পারেন, যা খুব বড় JSON ডেটা হ্যান্ডল করার জন্য উপকারী।
- Data-binding: Jackson এর data-binding টেকনোলজি JSON ডেটার সাথে Java অবজেক্টের সম্পর্ক সহজভাবে সংজ্ঞায়িত করে এবং এটি সরাসরি রূপান্তরের সুযোগ প্রদান করে।
Jackson এর ObjectMapper ক্লাস হল JSON এবং Java অবজেক্টের মধ্যে রূপান্তর করার জন্য সবচেয়ে গুরুত্বপূর্ণ এবং ব্যাপকভাবে ব্যবহৃত একটি টুল। এটি serialization (Java Object to JSON) এবং deserialization (JSON to Java Object) সহজ করে তোলে। Jackson high-performance, flexible, এবং customizable যা ডেভেলপারদের JSON ডেটার সাথে কাজ করার সময় আরও সুবিধা প্রদান করে। ObjectMapper এর বিভিন্ন মেথড ব্যবহার করে আপনি JSON ডেটাকে খুব সহজে Java অবজেক্টে এবং Java অবজেক্টকে JSON ফরম্যাটে রূপান্তর করতে পারবেন।
Read more